#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


int main()
{
  umask(0);
  // 新建文件需要用到第三个参数来设置文件权限,注意别忘了umask
  // int fd = open("log.txt", O_WRONLY|O_CREAT, 0666); //覆盖写入，不会清空原内容
  // int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);  // O_TRUNC 会清空原先内容
  int fd = open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);  // O_APPEND 不会清空原先内容，追加的方式打开文件，类似fopen的a方式打开文件
  
  if (fd < 0) {
    printf("open file error\n");
    return 1;
  }
  
  const char *message = "hello file system call\n";
  write(fd, message, strlen(message));

  close(fd);
  
  return 0;
}


//#define ONE (1<<0) // 1
//#define TWO (1<<1) // 2
//#define THREE (1<<2) // 4
//#define FOUR (1<<3) // 8
//
//void show(int flags)
//{
//  if (flags & ONE) printf("hello function1\n");
//  if (flags & TWO) printf("hello function2\n");
//  if (flags & THREE) printf("hello function3\n");
//  if (flags & FOUR) printf("hello function4\n");
//}
//
//int main()
//{
//  printf("--------------------------------\n");
//  show(ONE);
//  printf("--------------------------------\n");
//  show(TWO);
//  printf("--------------------------------\n");
//  show(ONE|TWO);
//  printf("--------------------------------\n");
//  show(ONE|TWO|THREE);
//  printf("--------------------------------\n");
//  show(ONE|TWO|THREE|FOUR);
//  printf("--------------------------------\n");
//  return 0;
//}

//int main()
//{
//    // chdir(/home/wangzn2016);
//    printf("Pid: %d\n",getpid());
//    FILE *fp = fopen("10_30_test.txt","a");
//    if (fp == NULL) {
//      perror("fopen");
//      return 1;
//    }
//    
//    // const char *message = "hello Linux message\n";
//    //  fwrite(message, strlen(message), 1, fp);
//    const char *message = "helo Linux message";
//    fprintf(fp,"%s : %d\n", message, 1234);
//    fprintf(stdout, "%s : %d\n", message, 1234);
//    fclose(fp);
//   // sleep(1000);
//    return 0;
//}


